import Vue from 'vue'
import Vuex from 'vuex'
import { loginAPI } from '@/api'

Vue.use(Vuex)
export default new Vuex.Store({
  state: {
    // token: '',
    // refresh_token: ''
    token: localStorage.getItem('token') || '', // 前面有值用前面的, 前面要是null, 就用后面的
    refresh_token: localStorage.getItem('refresh_token') || ''
  },
  mutations: {
    // 第一个参数是state里的对象
    setToken (state, token) {
      localStorage.setItem('token', token)// 本地储存
      state.token = token
    },
    setRefreshToken (state, refreshToken) {
      localStorage.setItem('refresh_token', refreshToken)// 本地储存
      state.refresh_token = refreshToken
    }
  },
  actions: {
    // 第一个参数是vuex实例 第二个是调用时传的参数
    async asyncLoginAction (store, val) {
      try {
        const res = await loginAPI(val)
        console.log(res)
        const { token, refresh_token } = res.data.data
        console.log(token)
        console.log(refresh_token)
        // // commit 调用mutations里面的方法
        store.commit('setToken', token)
        store.commit('setRefreshToken', refresh_token)
        // return Promise.resolve(res) // 返回成功的Promise对象
      } catch (err) {
        return Promise.reject(err)
      }
    }
  },
  modules: {
  }

})
